\chapter{Roadmap}\label{chap:roadmap}
\begin{center}
\textbf{Projektarbeit Herbstsemester 2007}\\
\textbf{Entwicklungsumgebung für eine Intelligente Kamera}\\
Stand\\
Version 2.0 - 22. November 2007\\
Autoren\\
Daniel Kummer, Sebastian Kummer\\
Dozent\\
Markus Thaler\\
Partner\\
Super Computing Systems (SCS)\\
Samuel Zahnd\\
\end{center}

\section{Aktueller Stand}
\subsection{Projektstatus}
Wir befinden uns momentan am Anfang der Implementationsphase. Die Analysephase sowie die Spezifikationen sind weitgehend abgeschlossen. Die erzielten Resultate sind im entsprechenden Abschnitt zusammengefasst. Im Vordergrund steht nun die Implementation der API auf dem Zielsystem sowie dem Host. Die fakultativen Komponenten werden erst angegangen, wenn die Funktionalität der API sichergestellt ist.

\subsection{Stundenbilanz}
Für die Projektarbeit werden pro Person 6 ECTS-Punkte vergeben. Dies entspricht bei 2 Personen einem Gegenwert von 330 Arbeitsstunden.\\
Der Startschuss zur PA erfolgte am 28.09.07 die Abgabe hat am 21.12.07 zu erfolgen. Die absolute Dauer der PA beträgt also 12 Wochen. Der Aufwand pro Woche und Person beträgt 14 Stunden.\\
Bis zum heutigen Datum (22.11.07) haben wir ca. 200 Personenstunden in die PA investiert und befinden uns nun im letzten Drittel der Gesamtdauer.\\
\begin{center}
\begin{tabular}{|r|c|c|c|}
\hline \textbf{Ausgeführte Tätigkeit} & \begin{sideways}\textbf{Anzahl Stunden (Dauer)}\end{sideways} & \begin{sideways}\textbf{Beteiligte Personen (Gewichtung)}\end{sideways} & \begin{sideways}\textbf{Stunden Total (Personenstunden)}\end{sideways} \\ 
\hline \textbf{Analyse} & \textbf{85} &  & \textbf{145} \\ 
\hline Meetings und Anforderungsabklärungen & 30 & 2 & 60 \\ 
\hline Aneignung KnowHow über LCV & 30 & 2 & 60 \\ 
\hline Abklärung Realisation / Proof of Concept & 25 & 1 & 25 \\ 
\hline \textbf{Design und Spezifikationen} & \textbf{23} &  & \textbf{23} \\ 
\hline Pflichtenheft & 5 & 1 & 5 \\ 
\hline Treiber & 5 & 1 & 5 \\ 
\hline API & 15 & 1 & 15 \\ 
\hline \textbf{Implementation} & \textbf{15} &  & \textbf{15} \\ 
\hline API & 15 & 1 & 15 \\ 
\hline \textbf{Dokumentation} & \textbf{20} &  & \textbf{20} \\ 
\hline Roadmaps & 10 & 1 & 10 \\ 
\hline Doku Analyse und Vorgehen & 5 & 1 & 5 \\ 
\hline Doku Implementation & 5 & 1 & 5 \\ 
\hline \textbf{Total} &  &  & \textbf{203} \\ 
\hline 
\end{tabular} 
\mycaption{table}{Roadmap, ausgeführte Tätigkeiten}
\end{center}

\begin{center}
\begin{tabular}{|r|c|c|c|}
\hline \textbf{Geplante Tätigkeit} & \begin{sideways}\textbf{Anzahl Stunden (Dauer)}\end{sideways} & \begin{sideways}\textbf{Beteiligte Personen (Gewichtung)}\end{sideways} & \begin{sideways}\textbf{Stunden Total (Personenstunden)}\end{sideways} \\ 
\hline \textbf{Analyse} & \textbf{6} &  & \textbf{12} \\ 
\hline Meetings und Abklärungen & 6 & 2 & 12 \\ 
\hline \textbf{Design und Spezifikationen} & \textbf{6} &  & \textbf{6} \\ 
\hline Pflichtenheft & 2 & 1 & 2 \\ 
\hline IDE Integration & 2 & 1 & 2 \\ 
\hline BV Libary & 2 & 1 & 2 \\ 
\hline \textbf{Implementation} & \textbf{75} &  & \textbf{75} \\ 
\hline API & 49 & 1 & 49 \\ 
\hline IDE Integration & 15 & 1 & 15 \\ 
\hline BV Libary & 5 & 1 & 5 \\ 
\hline \textbf{Dokumentation} & \textbf{30} &  & \textbf{30} \\ 
\hline Doku Analyse und Vorgehen & 15 & 1 & 15 \\ 
\hline Doku Implementation & 15 & 1 & 15 \\ 
\hline \textbf{Total} &  &  & \textbf{127} \\ 
\hline 
\end{tabular} 
\mycaption{table}{Roadmap, geplante Tätigkeiten}
\end{center}

\section{Erzielte Resultate / Fortschritte}
\subsection{Analyse}
\subsubsection{Benötigter Funktionsumfang}
Die Anforderungen an den Funktionsumfang wurden im Pflichtenheft festgehalten.
\subsubsection{Kamera API}
Die API soll das Konfigurieren der Kamera, Holen eines Bildes- oder Bildausschnittes, sowie die Benutzung der LCV I/O-Ports ermöglichen. Sie wird nur für Linux implementiert, eine Implementation für Windows oder anderen Betriebssystem soll aber dennoch möglich sein.
\subsubsection{Kamera Treiber}
Der bestehende Treiber für den MT9V032 Sensor weist einige Mängel auf. So ist der DMA-Transfer, bei dem das Bild übertragen wird, nicht immer erfolgreich. Des Weiteren wird die Kamera in ''Snapshot-Mode'' betrieben, wodurch das erste Bild unbrauchbar wird. Wir haben zwar Spezifikationen zur Verbesserung des Treibers festgelegt, jedoch gestaltet sich die konkrete Umsetzung relativ aufwendig. Auch ist noch nicht bekannt welche Zeitanforderungen an die Kamera gestellt werden und ob eine Optimierung überhaupt notwendig ist. Aus diesen Gründen haben wir beschlossen, die Korrektur des Treibers nicht zu priorisieren. 
\subsubsection{GPIO (LCV Port)}
Um die GPIO Ports nutzen zu können muss sehr wahrscheinlich ein eigener Treiber geschrieben werden.

\subsection{Design}
\subsubsection{Kamera API}
Die genauen Spezifikationen werden im Dokument Definition Kamera API aufgeführt.
\subsubsection{Kamera Treiber Spezifikation}
Die unregelmässig auftretenden Fehler während eines DMA-Transfers sind zu beheben.\\
Die Übertragung des Bildes soll durch einen einzigen 8bit-DMA-Transfer erfolgen (Zeitersparnis Faktor 2)\\
Der Sensor soll automatisch alle 200ms aktiviert (beleuchtet) werden, damit er immer verwertbare Bilder liefert.\\
Von einem Memory-Buffer würden wir abraten, da sonst ständig DMA-Transfers ausgeführt werden müssen, welche die gesamte I/O blockieren. Auch wären die gebufferten Bilder möglicherweise gar nicht verwendbar (wenn sie zu alt sind) was den Worst-Case verschlimmert und ein nicht-deterministisches Zeitverhalten nach sich zieht.
\subsubsection{LCV-Mängel}
Die Startschwierigkeiten mit der LCV wurden überwunden. Es hat sich herausgestellt, dass die für die LCV modifizierte uClinux-Version nicht von einem Stable-Release, sondern von einem SVN-Snapshot abgeleitet worden ist. Daher sind, aufgrund zu grosser Versionsunterschiede, die Modifikationen nicht reproduzierbar. Es muss mit den Original-Dateien von Fabian Brugger gearbeitet werden. Auch sollte das LCV-Board mit dem aktuellen Platinen-Design nicht im Gehäuse betrieben werden, da Kurzschlüsse auf das Gehäuse eine Verwendung des Ethernets verunmöglichen.

\section{Weitere Planung}
\subsection{Kamera API}
Das API soll nach den erstellten Spezifikationen implementiert werden.\\
Meilenstein Implementation Zielsystem:  06.12.07\\
Meilenstein Implementation Hostsystem: 12.12.07\\
\subsection{Cross-Compiling}
Es soll aufgezeigt werden, wie Entwicklung und Debuggen komfortabel über ein IDE auf dem Host erfolgen kann. Zusätzlich sind Anleitungen zum Deployment zu erstellen.\\
Meilenstein: 18.12.07\\
\subsection{Bildverarbeitungsbibliotheken}
Es soll eine kleine Sammlung von Algorithmen zur Bildverarbeitung angelegt, bzw. der Grundstein zu einer solchen Bibliothek gelegt werden. Diese würde z.B. die Beyer-Conversion, Fourrier-Transformation oder die Konvertierung in übliche Bildformate beinhalten.\\
Diese Funktionalität ist aber optimal und wird nur implementiert falls der knappe Zeitplan dies zulässt.
